#include "glm/glm.hpp"
#include "fxcc/imgui/Editor.h"

using namespace fxcc::imgui;

template <>
bool Editor::Edit(const std::string& label, glm::vec2& inst)
{
    return ImGui::DragFloat2(label.c_str(), &inst.x);
}

template <>
bool Editor::Edit(const std::string& label, glm::vec3& inst)
{
    return ImGui::DragFloat3(label.c_str(), &inst.x);
}

template <>
bool Editor::Edit(const std::string& label, glm::vec4& inst)
{
    return ImGui::DragFloat4(label.c_str(), &inst.x);
}

template <>
bool Editor::Edit(const std::string& label, glm::ivec2& inst)
{
    return ImGui::DragInt2(label.c_str(), &inst.x);
}

template <>
bool Editor::Edit(const std::string& label, glm::ivec3& inst)
{
    return ImGui::DragInt3(label.c_str(), &inst.x);
}

template <>
bool Editor::Edit(const std::string& label, glm::ivec4& inst)
{
    return ImGui::DragInt4(label.c_str(), &inst.x);
}

template<>
bool Editor::Color<glm::vec3>(const std::string& label, glm::vec3& v)
{
    return ImGui::ColorEdit3(label.c_str(), &v.x);
};


template<>
bool Editor::Color<glm::vec4>(const std::string& label, glm::vec4& v)
{
    return ImGui::ColorEdit4(label.c_str(), &v.x);
};